1. Field of the Invention
The present invention generally relates to digital-based imaging devices and, in particular, to a system and method for compensating noise in a captured image.
2. Related Art
With the advent of digitally-based imaging devices capable of scanning and capturing an image, complex systems and methods have been developed to improve the quality of the captured image. One exemplary digitally-based imaging device is a scanner. One embodiment of a black-and-white scanner employs at least one linear array of pixels, such as a charged-coupled device (CCD). A color scanner employs color-sensitive pixels residing in a plurality of CCDs. Color-sensitive pixels in these CCDs may be, for example, sensitive to green, red and blue light. Matrix CCDs, also referred to as area CCDs, are similarly configured into a matrix of pixel rows and pixel columns.
One type of CCD has at least an array of pixels aligned in a linear configuration. Registers are in communication with each pixel to collect light information from each pixel. The CCD also comprises components configured to communicate the collected light information from the pixels into the registers, and to communicate the light information from the registers to a processor, such as a control application specific integrated circuit (ASIC).
Each pixel accumulates a charge as light is detected. The magnitude of the collected charge is proportional to the amount of light sensed by the pixel. This charge is referred to hereinafter as light information Furthermore, a scanner is likely to have a plurality of CCDs or a matrix CCD having color-sensitive pixels, particularly if color scanning is provided.
Random noise in the CCD causes variation in the measured output from the pixels such that the collected light information does not precisely correspond to the detected image. If a pixel is exposed to an identical amount of light during successive readings, the measured output will randomly vary around the correct output. In addition, shot noise occurs in light detection. Shot noise is the noise due to the statistical probability that any single photon is converted to an electron. For example, a pixel may be accumulating charge proportional to incident light reflected from an image. Light information corresponding to the value of the accumulated change from each of the pixels is received and converted into a digital data value.
Accordingly, when a pixel accumulates charge from incident light reflected from an image a first time, a first data value is determined from the received light information. Thus, for a plurality of pixels, there is a plurality of corresponding first data values, one data value for each pixel. When the plurality of pixels are again exposed to the same image under identical conditions the pixels accumulate charge from incident light reflected from the same image a second time, light information from the pixels are received and converted into a second plurality of data values.
In the absence of random and/or shot noise, the first and second data values for any one pixel would be equal, and the data values would correspond to the true color of the detected image. However, because of random and/or shot noise, rarely will the first and second data values for any one pixel be equal to each other and/or equal to the data value corresponding to the true color of the detected image.
Random noise and/or shot noise, if not reduced, cause undesirable visible variations in the appearance of the processed image. For example, a region of an original image having a uniform color can appear to have color variations in the corresponding region of the reproduced image.
CCD devices may be configured to compensate, calibrate and/or reduce non-uniformities due to random and/or shot noise. Signal averaging of light information can be used to determine data values that more closely correspond to the detected image of the light information, thereby improving image quality.
Signal averaging is effected by defining a number of times, referred to hereinafter as the number of samples, that the CCD will capture the image or the portion of the image. For each pixel, the data values corresponding to the light information are added together and then divided by the sample size. Signal averaging is an effective way to compensate for random and/or shot noise because the process of capturing an image (or portion of an image), and the subsequent generation of the data values, can occur very rapidly.
For example, the sample size may be defined as four. In a device configured to scan a portion of an image, the device scans the image portion four times. That is, the portion of the image that is scanned is exposed to light, and the light information from the CCD is received four times. The data values associated with the light information from the four scans are added for each one of the pixels, and then divided by four (the sample size), thereby determining an average value of data for each pixel.
However, the above-described signal-averaging process requires a significant amount of memory and bandwidth to process the data. If sufficient memory and/or bandwidth is not available, data overflows and associated errors may occur when the data values for the selected samples are added.
For example, a CCD device may be configured to communicate and process data values using a sixteen-bit system. The capacity of the digital data system, here sixteen-bits, is hereinafter referred to as bandwidth. Accordingly, a sixteen-bit system is designed to communicate, store and process data values residing in no more than sixteen-bits. If a data value is encountered or generated that is too large to be represented by the sixteen-bit limit, an overflow condition results. That is, the system must somehow recognize and accommodate the data value that is too large to be represented by a single sixteen-bit number.
Overflow conditions may occur when the data values are added during the signal-averaging process. The overflow condition must be accommodated to avoid numerical errors. One approach is to increase the system bandwidth to operate using a greater number of bits, such as thirty-two bits. Accordingly, the components of the system, such as the processor, the memory and the communication busses, are designed with sufficient bandwidth to accommodate thirty-two bit digital data. Thus, when sixteen-bit data values corresponding to the light information is added together when signal averaging is performed, data values that are greater that sixteen-bits can be accommodated (represented with a thirty-two bit number). However, designing and fabricating a thirty-two bit system to communicate and process data that can be mostly represented with sixteen-bits is not a very efficient and/or cost-effective approach to accommodating overflows because a majority of the data values can be represented with sixteen-bits.
Another approach to accommodating overflows is to employ specialized software that recognizes and accommodates overflow conditions. For example, a sixteen-bit system may be configured to a recognize a data value that is too large to be represented with sixteen-bits. The software then employs two sixteen-bit data values to represent the larger data value. However, such specialized systems require additional processing time or processing capacity to accommodate detected overflow conditions.